﻿using iss.sg4210.se18.team6s.jass.DAL.DataAccess.MSSQL;

namespace iss.sg4210.se18.team6s.jass.DAL.DataAccess.Interfaces
{
    public abstract class DataAccessFactory
    {
        private static DataAccessFactory _dataAccessFactory = null;
        private static object sLock = new object();

        public static DataAccessFactory Instance
        {
            get
            {
                if (_dataAccessFactory == null)
                {
                    lock (sLock)
                    {
                        if (_dataAccessFactory == null)
                            _dataAccessFactory = new DataAccessFactorySQL();


                    }
                }
                return _dataAccessFactory;
            }
        }

        public abstract IActions Action { get; }
        public abstract IAddresses Address { get; }
        public abstract IAdvertisement Advertisement { get; }
        public abstract IAdvertisementSearchLog AdvertisementSearchLog { get; }
        public abstract IAdvertisementSkill AdvertisementSkill { get; }
        public abstract IAdvertisementType AdvertisementType { get; }
        public abstract IAdvertisementViewLog AdvertisementViewLog { get; }
        public abstract IAdvertiserAccount AdvertiserAccount { get; }
        public abstract IAdvertiserAccountTopUpLog AdvertiserAccountTopUpLog { get; }
        public abstract IAlertCriteria AlertCriteria { get; }
        public abstract IArticles Article { get; }
        public abstract ICompany Company { get; }
        public abstract IEvents Event { get; }
        public abstract IGeographicalArea GeographicalArea { get; }
        public abstract IResponse Response { get; }
        public abstract IResponseActions ResponseAction { get; }
        public abstract ISkills Skill { get; }
        public abstract ISkillType SkillType { get; }
    }
}
